﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace ProyectoFinal
{
    public partial class Form3 : Form
    {
        
        DataSet BaseDeDatos;
        DataSet BaseDeProveedores;
        DataSet TablasBusquedas;
        string rutaSQL = "Data Source=localhost;Initial Catalog=Isotopos;Integrated Security=True";
        string suspendidos = "";

        public void cargar_categorias()
        {
            
            string QuerySQL = "Select * from Categorías";
            InitializeComponent();
            SqlConnection cn = new SqlConnection(rutaSQL);
            SqlDataAdapter adaptador = new SqlDataAdapter(QuerySQL, cn);
            cn.Open();
            adaptador.Fill(BaseDeDatos, "Categorías");
            cn.Close();
            cb_cat.DataSource = BaseDeDatos.Tables["Categorías"];
            cb_cat.ValueMember = "IdCategoría";
            cb_cat.DisplayMember = "NombreCategoría";
        }

        public void cargar_proveedores()
        {
            string QuerySQL = "Select * from Proveedores";
            SqlConnection cn = new SqlConnection(rutaSQL);
            SqlDataAdapter adaptador = new SqlDataAdapter(QuerySQL, cn);
            cn.Open();
            adaptador.Fill(BaseDeProveedores, "Proveedores");
            cn.Close();
            cb_prov.DataSource = BaseDeProveedores.Tables["Proveedores"];
            cb_prov.ValueMember = "IdProveedor";
            cb_prov.DisplayMember = "NombreCompañía";
        }

        public Form3()
        {
            TablasBusquedas = new DataSet();
            BaseDeDatos = new DataSet();
            BaseDeProveedores = new DataSet();
            cargar_categorias();
            cargar_proveedores();
            cb_prov.Text = "";
            cb_cat.Text = "";
        }

        public void elegir_categoria(string cat, string suspen)
        {
            TablasBusquedas.Tables.Clear();
            string QuerySQL = "Select * from Productos where IdCategoría=" + cat + suspen;
            SqlConnection cn = new SqlConnection(rutaSQL);
            SqlDataAdapter adaptador = new SqlDataAdapter(QuerySQL, cn);
            cn.Open();
            adaptador.Fill(TablasBusquedas, "Prods");
            cn.Close();
            cb_producto.DataSource = TablasBusquedas.Tables["Prods"];
            cb_producto.ValueMember = "IdProducto";
            cb_producto.DisplayMember = "NombreProducto";
            lbl_prov.ForeColor = Color.Maroon;
            lbl_cat.ForeColor = Color.Red;
         }

        public void elegir_prov(string cat,string suspen)
        {
            TablasBusquedas.Tables.Clear();
            string QuerySQL = "Select * from Productos where IdProveedor=" + cat + suspen;
            SqlConnection cn = new SqlConnection(rutaSQL);
            SqlDataAdapter adaptador = new SqlDataAdapter(QuerySQL, cn);
            cn.Open();
            adaptador.Fill(TablasBusquedas, "Prods");
            cn.Close();
            cb_producto.DataSource = TablasBusquedas.Tables["Prods"];
            cb_producto.ValueMember = "IdProducto";
            cb_producto.DisplayMember = "NombreProducto";
            lbl_prov.ForeColor = Color.Red;
            lbl_cat.ForeColor = Color.Maroon;

            int a  = TablasBusquedas.Tables["Prods"].Rows.Count;
            if (a == 0) { cb_producto.Text = "Este Proveedor no tiene Productos"; } 
        }


        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            suspendidos = "";
            if (ck_ocultarsusp.Checked == true) suspendidos = " and Suspendido=0";
            if (cb_cat.SelectedIndex>0)
            {
                elegir_categoria(cb_cat.SelectedValue.ToString(), suspendidos);
            }
        }
    
        private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
        {
            suspendidos = "";
            if (ck_ocultarsusp.Checked == true) suspendidos = " and Suspendido=0";
            if (cb_prov.SelectedIndex > 0)
            {
                elegir_prov(cb_prov.SelectedValue.ToString(), suspendidos);             
            }
        }

          private void buscarpod()
        {
            suspendidos = "";
            if (ck_ocultarsusp.Checked == true) suspendidos = " and Suspendido=0";
            try
            {
                if ((cb_producto.SelectedIndex < 0)) return;
                lbl_Prod.Text = cb_producto.Text;
                Text = "Viendo Producto: " + cb_producto.Text;
                cargar_datos(cb_producto.SelectedValue.ToString(), suspendidos);
            }
            catch (Exception)
            {

            }
        }

        public void limpiar_valores(){
            lbl_precio1.Text = "";
            lbl_precio2.Text = "";
            lbl_preciocompra.Text = "";
            lbl_stock_hay.Text = "";
            lbl_stock_pedido.Text = "";
            lbl_pr_prov.Text = "";
            lbl_pr_nombre.Text = "";
            lbl_pr_ciudad.Text = "";
            lbl_pr_pais.Text = "";
            lbl_pr_tel.Text = "";
        }

        public void cargar_datos(string cat, string suspen)
        {
            suspendido.Visible = false;
            limpiar_valores();
            string QuerySQL = "Select * from Productos inner join Proveedores on Productos.IdProveedor=Proveedores.IdProveedor where IdProducto=" + cat + suspen;
       
            SqlConnection con = new SqlConnection(rutaSQL);
            SqlCommand cmd = new SqlCommand(QuerySQL);

            // SqlDataAdapter adaptador = new SqlDataAdapter(QuerySQL, con);
            //adaptador.Fill(precio_prod., "Productos");

            DataTable tabla = new DataTable(); // El resultado lo guardaremos en una tabla
            SqlDataAdapter AdaptadorTabla = new SqlDataAdapter(QuerySQL, con); // Usaremos un DataAdapter para leer los datos

            AdaptadorTabla.Fill(tabla);// Llenamos la tabla con los datos leídos

            lbl_precio1.Text = float.Parse(tabla.Rows[0]["PrecioUnidad"].ToString()).ToString().Replace(",",".");
            lbl_precio2.Text = float.Parse(tabla.Rows[0]["PrecioUnidad2"].ToString()).ToString().Replace(",", ".");
            lbl_preciocompra.Text = float.Parse(tabla.Rows[0]["PrecioUnidadCompra"].ToString()).ToString().Replace(",", ".");
            lbl_stock_hay.Text = tabla.Rows[0]["UnidadesEnExistencia"].ToString();
            lbl_stock_pedido.Text = tabla.Rows[0]["UnidadesEnPedido"].ToString();
            lbl_pr_prov.Text = tabla.Rows[0]["NombreCompañía"].ToString();
            lbl_pr_nombre.Text = tabla.Rows[0]["NombreContacto"].ToString();
            lbl_pr_ciudad.Text = tabla.Rows[0]["Ciudad"].ToString();
            lbl_pr_pais.Text = tabla.Rows[0]["País"].ToString();
            lbl_pr_tel.Text = tabla.Rows[0]["Teléfono"].ToString();
            lbl_idprod.Text = tabla.Rows[0]["IdProducto"].ToString();

            lbl_stockmin.Text = tabla.Rows[0]["StockMinimo"].ToString();

            btn_verstock.Enabled = true;
            bool suspendidos = Boolean.Parse(tabla.Rows[0]["Suspendido"].ToString());
            if (suspendidos)
            {
                suspendido.Visible = true;
                btn_suspender.Text = "Habilitar Producto";
            }
        }

        private void cb_producto_SelectedIndexChanged(object sender, EventArgs e)
        {
            btn_suspender.Text = "Suspender Producto";
            buscarpod();
        }

        private void Form3_Load(object sender, EventArgs e)
        {
            lbl_pr_prov.Text = "";
            lbl_pr_nombre.Text = "";
            lbl_pr_ciudad.Text = "";
            lbl_pr_pais.Text = "";
            lbl_pr_tel.Text = "";
            cb_cat.SelectedIndex = 1;
            cb_cat.SelectedIndex = 0;
        }

        private void btnCopiarPrecio_Click(object sender, EventArgs e)
        {
            //CAST(RAND(CHECKSUM(NEWID())) * 100 as INT) + 1, 

            string prd = cb_producto.SelectedValue.ToString();
            string updateprecios = "' , PrecioUnidad2='" + lbl_precio2.Text + "' , PrecioUnidadCompra='" + lbl_preciocompra.Text+"'";
            string QuerySQL = "Update Productos Set PrecioUnidad='" + lbl_precio1.Text + updateprecios + " where IdProducto=" + prd;

            SqlConnection con = new SqlConnection(rutaSQL);
            SqlCommand cmdInsert = con.CreateCommand();
            cmdInsert.CommandText = QuerySQL;
            con.Open();
            cmdInsert.ExecuteNonQuery();
            con.Close();
        }

        private void ck_ocultarsusp_CheckedChanged(object sender, EventArgs e)
        {
            buscarpod();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string prd = cb_producto.SelectedValue.ToString();
          
            int val = 1;
            if (suspendido.Visible == true) val = 0;
            string QuerySQL = "Update Productos Set Suspendido=" + val.ToString()+ " where IdProducto=" + prd;

            SqlConnection con = new SqlConnection(rutaSQL);
            SqlCommand cmdInsert = con.CreateCommand();
            cmdInsert.CommandText = QuerySQL;
            con.Open();
            cmdInsert.ExecuteNonQuery();
            con.Close();

            if (val == 1) cb_producto.SelectedIndex = 0;
        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            Stock abrirformulario = new Stock(cb_producto.SelectedValue.ToString());
            abrirformulario.ShowDialog();  
        }

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        private void button1_Click_2(object sender, EventArgs e)
        {
            Close();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Form4 abrirformulario = new Form4();
            abrirformulario.ShowDialog();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //CAST(RAND(CHECKSUM(NEWID())) * 100 as INT) + 1, 

            string prd = cb_producto.SelectedValue.ToString();
            string QuerySQL = "Update Productos Set StockMinimo='" + lbl_stockmin.Text + "' where IdProducto=" + prd;

            SqlConnection con = new SqlConnection(rutaSQL);
            SqlCommand cmdInsert = con.CreateCommand();
            cmdInsert.CommandText = QuerySQL;
            con.Open();
            cmdInsert.ExecuteNonQuery();
            con.Close();
        }    
    }
}
